/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sni.org.pe.seguridad;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import sni.org.pe.model.Usuario;
import sni.org.pe.session.remote.UsuarioSessionEJBRemote;
import sni.org.pe.utilitario.*;

/**
 *
 * @author Ericson
 */
@ManagedBean(name = "login")
@RequestScoped
public class Login {

    private String user;
    private String password;
    private FacesContext fc;
    private ServiceLocator sLocator;
    private UsuarioSessionEJBRemote ejbUsuario;
    private sni.org.pe.seguridad.MBUsuario mbUsuario;

    public Login() {
        fc = FacesContext.getCurrentInstance();
        sLocator = new ServiceLocator();
        ejbUsuario = (UsuarioSessionEJBRemote) sLocator.findServiceRemote(UProperties.getMessage(UParametro.RUTA_JNDI, "USUARIO"));
        mbUsuario = (sni.org.pe.seguridad.MBUsuario) fc.getExternalContext().getSessionMap().get("mbusuario");
        if(mbUsuario==null){
            mbUsuario=new MBUsuario();
        }
    }

    /**
     * @return the user
     */
    public String getUser() {
        return user;
    }

    /**
     * @param user the user to set
     */
    public void setUser(String user) {
        this.user = user;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    public String isLogin() {
        //Verificando que el Login sea el correcto
        Usuario usuario = ejbUsuario.getUsuario(getUser(), Encripta.encriptar(getPassword(), Encripta.HASH_SHA1));
        if (usuario != null) {
            mbUsuario.setUsuario(usuario); //Estableciendo todos los perfiles del usuario
            mbUsuario.setHoraIngreso(new Fecha().getHoraIngreso());
            fc.getExternalContext().getSessionMap().put("mbusuario", mbUsuario);
            mbUsuario.generarMenu(); //Estableciendo las credenciales de acceso al sistema
            return "main?faces-redirect=true";
        } else {
            fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, UProperties.getMessage(UParametro.RUTA_MENSAJES, "USUARIO_PASSWORD_INCORRECTO"), ""));
        }
        return null;
    }
}
